package com.glsc.ngateway.common.base.domain.mysql.opmanage.report.excel;


import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;

import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name = "t_subhk_fund_trs")
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@IdClass(TRSId.class)
public class TRS {
    @Column(name="Party_A_under_CSA")
    @ExcelProperty("Party A under CSA")
    private String partyAUnderCSA;

    @Column(name="Party_B_under_CSA")
    @ExcelProperty("Party B under CSA")
    private String partyBUnderCSA;

    @Column(name="Party_B_Independent_Amount")
    @ExcelProperty("Party B Independent Amount")
    private Double partyBIndependentAmount;

    @Id
    @Column(name="Valuation_Date")
    @ExcelProperty("Valuation Date")
    private Date valuationDate;

    @Column(name="Effective_Date")
    @ExcelProperty("Effective Date")
    private Date effectiveDate;

    @Column(name="Termination_Date")
    @ExcelProperty("Termination Date")
    private Date terminationDate;

    @Column(name="Bond")
    @ExcelProperty("Bond")
    private String bond;

    @Column(name="Notional")
    @ExcelProperty("Notional")
    private Double notional;

    @Column(name="Initial_Clean")
    @ExcelProperty("Initial Clean")
    private Double initialClean;

    @Column(name="Initial_Dirty")
    @ExcelProperty("Initial Dirty")
    private Double initialDirty;

    @Column(name="Market_Clean")
    @ExcelProperty("Market Clean")
    private Double marketClean;

    @Column(name="Market_Dirty")
    @ExcelProperty("Market Dirty")
    private Double marketDirty;

    @Column(name="Initial_FX")
    @ExcelProperty("Initial FX")
    private Double initialFX;

    @Column(name="Market_FX")
    @ExcelProperty("Market FX")
    private Double marketFX;

    @Column(name="CNY_Notional")
    @ExcelProperty("CNY Notional")
    private Double cnyNotional;

    @Column(name="USD_Notional")
    @ExcelProperty("USD Notional")
    private Double usdNotional;

    @Column(name="Floating_Amount")
    @ExcelProperty("Floating Amount")
    private Double floatingAmount;

    @Column(name="Total_Return_Amount")
    @ExcelProperty("Total Return Amount")
    private Double totalReturnAmount;

    @Column(name="Exposure")
    @ExcelProperty("Exposure")
    private Double exposure;

    @Column(name="CalcRecPnL")
    @ExcelProperty("CalcRecPnL")
    private Double calcRecPnL;

    @Id
    @Column(name="MthlyExpMvmt")
    @ExcelProperty("MthlyExpMvmt")
    private Double mthlyExpMvmt;

    @Id
    @Column(name="DailyExpMvmt")
    @ExcelProperty("DailyExpMvmt")
    private Double dailyExpMvmt;

    @Id
    @Column(name="fd_date")
    private Date date;

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getPartyAUnderCSA() {
        return partyAUnderCSA;
    }

    public void setPartyAUnderCSA(String partyAUnderCSA) {
        this.partyAUnderCSA = partyAUnderCSA;
    }

    public Double getPartyBIndependentAmount() {
        return partyBIndependentAmount;
    }

    public String getPartyBUnderCSA() {
        return partyBUnderCSA;
    }

    public void setPartyBIndependentAmount(Double partyBIndependentAmount) {
        this.partyBIndependentAmount = partyBIndependentAmount;
    }

    public void setPartyBUnderCSA(String partyBUnderCSA) {
        this.partyBUnderCSA = partyBUnderCSA;
    }

    public Date getValuationDate() {
        return valuationDate;
    }

    public void setValuationDate(Date valuationDate) {
        this.valuationDate = valuationDate;
    }

    public Date getEffectiveDate() {
        return effectiveDate;
    }

    public void setEffectiveDate(Date effectiveDate) {
        this.effectiveDate = effectiveDate;
    }

    public Date getTerminationDate() {
        return terminationDate;
    }

    public void setTerminationDate(Date terminationDate) {
        this.terminationDate = terminationDate;
    }

    public String getBond() {
        return bond;
    }

    public void setBond(String bond) {
        this.bond = bond;
    }

    public Double getNotional() {
        return notional;
    }

    public void setNotional(Double notional) {
        this.notional = notional;
    }

    public Double getInitialClean() {
        return initialClean;
    }

    public void setInitialClean(Double initialClean) {
        this.initialClean = initialClean;
    }

    public Double getInitialDirty() {
        return initialDirty;
    }

    public void setInitialDirty(Double initialDirty) {
        this.initialDirty = initialDirty;
    }

    public Double getMarketClean() {
        return marketClean;
    }

    public void setMarketClean(Double marketClean) {
        this.marketClean = marketClean;
    }

    public Double getMarketDirty() {
        return marketDirty;
    }

    public void setMarketDirty(Double marketDirty) {
        this.marketDirty = marketDirty;
    }

    public Double getInitialFX() {
        return initialFX;
    }

    public void setInitialFX(Double initialFX) {
        this.initialFX = initialFX;
    }

    public Double getMarketFX() {
        return marketFX;
    }

    public void setMarketFX(Double marketFX) {
        this.marketFX = marketFX;
    }

    public Double getCnyNotional() {
        return cnyNotional;
    }

    public void setCnyNotional(Double cnyNotional) {
        this.cnyNotional = cnyNotional;
    }

    public Double getUsdNotional() {
        return usdNotional;
    }

    public void setUsdNotional(Double usdNotional) {
        this.usdNotional = usdNotional;
    }

    public Double getFloatingAmount() {
        return floatingAmount;
    }

    public void setFloatingAmount(Double floatingAmount) {
        this.floatingAmount = floatingAmount;
    }

    public Double getTotalReturnAmount() {
        return totalReturnAmount;
    }

    public void setTotalReturnAmount(Double totalReturnAmount) {
        this.totalReturnAmount = totalReturnAmount;
    }

    public Double getExposure() {
        return exposure;
    }

    public void setExposure(Double exposure) {
        this.exposure = exposure;
    }

    public Double getCalcRecPnL() {
        return calcRecPnL;
    }

    public void setCalcRecPnL(Double calcRecPnL) {
        this.calcRecPnL = calcRecPnL;
    }

    public Double getMthlyExpMvmt() {
        return mthlyExpMvmt;
    }

    public void setMthlyExpMvmt(Double mthlyExpMvmt) {
        this.mthlyExpMvmt = mthlyExpMvmt;
    }

    public Double getDailyExpMvmt() {
        return dailyExpMvmt;
    }

    public void setDailyExpMvmt(Double dailyExpMvmt) {
        this.dailyExpMvmt = dailyExpMvmt;
    }
}
